package com.ontheroad.activity.service.app;

import com.ontheroad.api.request.ActivityRequest;
import com.ontheroad.api.request.ActivityRequest.*;
import com.ontheroad.api.response.Response;
import com.ontheroad.core.annotation.ValidateGroup;
import org.springframework.remoting.service.annotation.RemoteService;

/**
 * Created by kedong on 2017/9/23 0023.
 */
@RemoteService
public interface AppActivityService {

    /**
     * 发布活动
     *
     * @param request
     * @return
     */
    @ValidateGroup(groups = publish.class)
    Response publish(ActivityRequest request) throws Exception;


    /**
     * 活动详情
     *
     * @return
     */
    @ValidateGroup(groups = detail.class)
    Response detail(ActivityRequest request) throws Exception;

    /**
     * 参加活动申请
     *
     * @param request
     * @return
     */
    @ValidateGroup(groups = joinApply.class)
    Response joinApply(ActivityRequest request) throws Exception;

    /**
     * 参加活动的申请列表
     *
     * @param request
     * @return
     * @throws Exception
     */
    Response joinApplyList(ActivityRequest request) throws Exception;

    /**
     * 审批用户参与活动的申请
     *
     * @param request
     * @return
     * @throws Exception
     */
    @ValidateGroup(groups = approve.class)
    Response approve(ActivityRequest request) throws Exception;


    /**
     * 活动列表
     *
     * @param request
     * @return
     */
    @ValidateGroup(groups = list.class)
    Response list(ActivityRequest request) throws Exception;

    /**
     * 搜索活动
     *
     * @param request
     * @return
     */
    @ValidateGroup(groups = {search.class})
    Response search(ActivityRequest request) throws Exception;


    /**
     * 我的活动（发布的）
     *
     * @param request
     * @return
     * @throws Exception
     */
    Response myActivityPublish(ActivityRequest request) throws Exception;

    /**
     * 我的活动（报名的）
     *
     * @param request
     * @return
     * @throws Exception
     */
    Response myActivityJoin(ActivityRequest request) throws Exception;

    /**
     * 删除活动
     *
     * @param request
     * @return
     * @throws Exception
     */
    Response delete(ActivityRequest request) throws Exception;

    /**
     * 活动点赞
     *
     * @param request
     * @return
     * @throws Exception
     */
    Response like(ActivityRequest request) throws Exception;

    /**
     * 取消点赞
     *
     * @param request
     * @return
     * @throws Exception
     */
    Response dissLike(ActivityRequest request) throws Exception;

    /**
     * 活动评论
     *
     * @param request
     * @return
     * @throws Exception
     */
    Response comment(ActivityRequest request) throws Exception;


}
